/**
 * 控制器是通过class来实现的
 * 但是并不是随便一个类都是控制器
 * 这个类要通过koa-ts-controllers进行加载，所以要实现一套规范
 * 类似于继承的概念，koa-ts-controllers给我们提供了一个装饰器，
 * controller通过这个装饰器，我们可以把一个普通的类，
 * 变成具有控制器特征的控制器类，
 * 
 */
// import {Controller, Get} from 'koa-ts-controllers';
import {Controller, Ctx, Req, Body, Get, Post, Delete, Query, Flow, Params, Version} from 'koa-ts-controllers';
import { Context } from 'koa'

@Controller('/test')
class TestController {
  	/**
     * 我们希望用户在通过get方式访问/test的时候执行该方法，
     * 我们就可以使用get，post装饰器来装饰该方法
     */
  	@Get('/hello') // url地址和请求方法
  	async sayWorld(@Ctx() ctx:Context) {
      // http://127.0.0.1:8888/api/v2/test/hello
      //  return ctx.body = '555555555'
      	return 'Hello Test!';
    }

    // post 参数为object foo：333，test：444
    @Post('/specific') // http://127.0.0.1:8888/api/v1/test/specific
    async createFooSpecific( @Body() fooParam: object) {
        console.log(fooParam);  // {foo:333,test:444}
        return fooParam;
    }
  
}